문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 컴퓨터에서의 수 표현 (문단 편집) ===== Normalized value의 표현 ===== 만약 {{{exp}}}의 값이 000...0이나 111...1이 아니라면 이는 Normalized value 형식으로 인코딩된 실수이다. 인코딩 방법은 다음과 같다. * {{{exp}}} = E + bias (단, bias = 2^^k - 1^^ - 1. k는 {{{exp}}}의 비트 수이다. 예를 들어 {{{exp}}}의 길이가 8비트일 때 bias = 127.)[* 이렇게 함으로써 {{{exp}}}는 언제나 양수가 된다.] * {{{frac}}} = (2진법으로 나타낸) M의 소숫점 아래 (유효)숫자들 (이때 M = 1.xxx... 형태를 하고 있다.)[* 이렇게 첫 자리 1을 생략함으로써 우리는 유효숫자를 한 자리 더 표현할 수 있게 되었다!] 디코딩[* 2진수를 10진수로 바꾸는 과정을 의미한다.] 방법은 다음과 같다. * E = {{{exp}}} - bias * M = 1.({{{frac}}}) 예로서 {{{float f = 2003.0;}}}에서 {{{f}}}에 어떤 2진수 값들이 들어가는지(인코딩 되는지) 알아보자.[* {{{float}}}형은 8비트로 {{{exp}}}를, 23비트로 {{{frac}}}을 나타낸다.(단정도)] 우선 10진수 2003.0을 2진수로 바꿔보자. 2003.0 = 11111010011,,(2),, = {{{#0000ff 1.1111010011}}},,(2),, × 2^^{{{#ff0000 10}}}^^ 이므로, E = {{{#ff0000 10}}}, M = {{{#0000ff 1.1111010011}}},,(2),,이다. 이때, {{{exp}}} = E + bias이고, bias = 2^^k - 1^^ - 1 = 2^^8 - 1^^ - 1 = 127이므로 {{{exp}}} = 10 + 127 = 137 = 1000 1001,,(2),,이다. 또한 M = 1.__1111010011__,,(2),,에서 {{{frac}}} = __111 1010 011__0 0000 0000 0000,,(2),,이다. 따라서 2003.0 = 0{{{#ff0000 100 0100 1}}}{{{#0000ff 111 1010 0110 0000 0000 0000}}},,(2),, = 0x44FA 6000으로 인코딩되어 {{{f}}}에 저장된다. 디코딩은 이를 역순으로 하면 된다. 위 식을 이용하면 Normalized value의 정밀도를 10진수로 환산할수 있다. 유효숫자는 M의 총 유효숫자 비트 폭을 이용하여 구할 수 있다. 단정도는 유효숫자가 24비트이므로, 10진수 기준으로는 약 7.225자리이다. 배정도는 53비트, 약 15.95자리이다. 지수는 {{{exp}}}의 값이 1부터 2^^k^^-2사이이므로, bias를 뺀 E의 범위는 -2^^k-1^^+2 ~ 2^^k-1^^-1이다. 단정도는 k=8이므로 지수부가 2^^-126^^~2^^127^^이고, 10진수로 근사하면 10^^-37.93^^~10^^38.23^^이다. 배정도는 k=11이므로 2^^-1022^^~2^^1023^^(≒10^^-307.65^^~10^^307.95^^)이다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기